#include <vector>
using std::vector;

class ConnectNPlayer {
  public:
    ConnectNPlayer(int, int, int, int);      // constructor;
    //virtual ~ConnectNPlayer();      // constructor;
    int getMove();        // add k to the end of the list
    void setMove(int k); // print the list to output
	void printBoard();


  protected:
    int height;    // board height
    int width;     // board width
    int numToWin;  //
    int debug;

    long int step;

    bool** board;
    int* heights;
	void addDib(int col, bool myTurn);
	void removeDib(int col);
	vector<int> getValidActions();
	bool isTerminateState(int col, bool myTurn);
	float calcNextMinimaxValue(int, bool);
	float calcMinimaxValue(bool);
	virtual int calcMove()=0;

};

